package condominio.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import condominio.excepcion.DAOExcepcion;
import condominio.modelo.Junta;
import condominio.modelo.JuntaTema;
import condominio.util.ConexionBD;

public class JuntaDAO extends BaseDAO {
	
	
	
	
	
	
	public Junta insertar(Junta vo) throws DAOExcepcion {
		
		
		
		String query = "INSERT INTO junta (Fecha,Hora) values (?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			
			if(ValidarFechaHora(vo.getFecha(),vo.getHora())!=1){
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setString(1, vo.getFecha());
				stmt.setString(2, vo.getHora());
				
								
				int i = stmt.executeUpdate();
				if (i != 1) {
					throw new SQLException("No se pudo insertar revisar valores");
				}else{
					
				  System.out.println("Registro Exitoso");
				}
			}else{
				System.out.println("Cruze de Horarios");
			}
			

		} catch (SQLException e) {
			
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		
					
	
	
	
	return vo;
	
}

	
	public JuntaTema insertar(JuntaTema vo) throws DAOExcepcion {
		
		
		
		String query = "INSERT INTO juntaTema (CodigoJunta,Residente,TipoTema,NombreTema,Acuerdos) values (?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			
			//if(ValidarResidente(vo.getResidente())==1){
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setInt(1, vo.getCodigoJunta());
				stmt.setString(2, vo.getResidente());
				stmt.setInt(3, vo.getTipoTema());
				stmt.setString(4, vo.getNombreTema());
				stmt.setString(5, vo.getAcuerdos());
				
								
				int i = stmt.executeUpdate();
				if (i != 1) {
					throw new SQLException("No se pudo insertar revisar valores");
				}else{
					
				  System.out.println("Registro Exitoso");
				}
			//}else{
			//	System.out.println("residente invalido");
			//}
			

		} catch (SQLException e) {
			
			System.err.println("Codigo de vivienda duplicado");
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		
					
	
	
	
	return vo;
	
}
	
	
	

public int ValidarFechaHora (String Fecha,String Hora) throws DAOExcepcion {
	
	Connection con = null;
	PreparedStatement stmt = null;
	ResultSet rs = null;
	int a=0;
	try {
		String query = "select Fecha,Hora from junta where Fecha=? AND Hora= ?";
		con = ConexionBD.obtenerConexion();
		stmt = con.prepareStatement(query);
		stmt.setString(1, Fecha);
		stmt.setString(2, Hora);
		rs = stmt.executeQuery();
		if (rs.next()) {
			a=1;
		}
	} catch (SQLException e) {
		System.err.println(e.getMessage());
		throw new DAOExcepcion(e.getMessage());
	} finally {
		this.cerrarResultSet(rs);
		this.cerrarStatement(stmt);
		this.cerrarConexion(con);
	}
	return a;
}
	
	
	
	
public int ValidarResidente (String residente) throws DAOExcepcion {
	
	Connection con = null;
	PreparedStatement stmt = null;
	ResultSet rs = null;
	int a=0;
	try {
		String query = "select DNI from residente where DNI=?";
		con = ConexionBD.obtenerConexion();
		stmt = con.prepareStatement(query);
		stmt.setString(1, residente);
		rs = stmt.executeQuery();
		if (rs.next()) {
			a=1;
		}
	} catch (SQLException e) {
		System.err.println(e.getMessage());
		throw new DAOExcepcion(e.getMessage());
	} finally {
		this.cerrarResultSet(rs);
		this.cerrarStatement(stmt);
		this.cerrarConexion(con);
	}
	return a;
}
	
	
	
	

}
